Small computer system interface (SCSI) is a computer protocol that uses a set of standard SCSI commands for transferring data between computers and data storage devices. Typically, a computer initiates SCSI commands which are directed to the data storage devices. The data storage device could be an advanced technology attachment (ATA) disk drive behind a SCSI to ATA bridge. In such a storage network environment, a SCSI initiator sends a SCSI command to the SCSI to ATA bridge. The SCSI to ATA bridge then translates the received SCSI command to an ATA command and then sends the ATA command to ATA targets. The ATA targets then execute the ATA command and perform associated input/output data transfers through the SCSI to ATA bridge. The SCSI to ATA bridge is essentially a variant of a SCSI target in the aforementioned topology.
After receiving a SCSI command by a SCSI target, if an error occurs in servicing the command at the SCSI target, an error response is sent by the associated SCSI target to the SCSI initiator. This error response is a check condition response that is sent back from the SCSI target to the SCSI initiator. Further, in response to the check condition, the SCSI initiator sends a SCSI request sense command which is used to obtain error information from the SCSI target. The SCSI target then responds to the SCSI request sense command with a set of SCSI sense data which, typically, includes 3 fields, namely a sense key, an additional sense code (ASC) and an additional sense code qualifier (ASQC), which gives increasing levels of detail about the error to the SCSI initiator. The SCSI initiator then takes action based on the received set of SCSI sense data.
However, in a storage network environment, typically, several generations of SCSI initiators and SCSI targets are used. Such an error response interpreted by one generation of a SCSI initiator may not be correctly interpreted by another generation of the SCSI initiator. In such a scenario, if the SCSI initiator cannot interpret the error response sent by the SCSI target, then a required action may not be performed by the SCSI initiator and this can result in severe and/or unnecessary error recovery actions, which can significantly degrade storage network performance.